package BL;

import DA.Conexion;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;

public class Avaluo {

    private String idAvaluo;
    private Date fechaVisita;
    private int oficina;
    private double areaCatastro;
    private String numeroCatastro;
    private String idPredial;
    private double areaRegistro;
    private double valorTerreno;
    private double valorConstruccion;
    private int idSolicitante;
    private int provincia;
    private int canton;
    private int distrito;

    public Avaluo() {
    }

    public Avaluo(String idAvaluo, Date fechaVisita, int oficina, double areaCatastro, String numeroCatastro, 
            String idPredial, double areaRegistro, double valorTerreno, double valorConstruccion, int idSolicitante,
            int provincia, int canton, int distrito) {
        this.setIdAvaluo(idAvaluo);
        this.setFechaVisita(fechaVisita);
        this.setOficina(oficina);
        this.setAreaCatastro(areaCatastro);
        this.setNumeroCatastro(numeroCatastro);
        this.setIdPredial(idPredial);
        this.setAreaRegistro(areaRegistro);
        this.setValorTerreno(valorTerreno);
        this.setValorConstruccion(valorConstruccion);
        this.setIdSolicitante(idSolicitante);
        this.setProvincia(provincia);
        this.setCanton(canton);
        this.setDistrito(distrito);
    }

    /**
     * *************************Gets y Sets*************************************
     */
    public String getIdAvaluo() {
        return idAvaluo;
    }

    public void setIdAvaluo(String idAvaluo) {
        this.idAvaluo = idAvaluo;
    }

    public Date getFechaVisita() {
        return fechaVisita;
    }

    public void setFechaVisita(Date fechaVisita) {
        this.fechaVisita = fechaVisita;
    }

    public int getOficina() {
        return oficina;
    }

    public void setOficina(int oficina) {
        this.oficina = oficina;
    }

    public double getAreaCatastro() {
        return areaCatastro;
    }

    public void setAreaCatastro(double areaCatastro) {
        this.areaCatastro = areaCatastro;
    }

    public String getNumeroCatastro() {
        return numeroCatastro;
    }

    public void setNumeroCatastro(String numeroCatastro) {
        this.numeroCatastro = numeroCatastro;
    }

    public String getIdPredial() {
        return idPredial;
    }

    public void setIdPredial(String idPredial) {
        this.idPredial = idPredial;
    }

    public double getAreaRegistro() {
        return areaRegistro;
    }

    public void setAreaRegistro(double areaRegistro) {
        this.areaRegistro = areaRegistro;
    }

    public double getValorTerreno() {
        return valorTerreno;
    }

    public void setValorTerreno(double valorTerreno) {
        this.valorTerreno = valorTerreno;
    }

    public double getValorConstruccion() {
        return valorConstruccion;
    }

    public void setValorConstruccion(double valorConstruccion) {
        this.valorConstruccion = valorConstruccion;
    }

    public int getIdSolicitante() {
        return idSolicitante;
    }

    public void setIdSolicitante(int idSolicitante) {
        this.idSolicitante = idSolicitante;
    }

    public int getProvincia() {
        return provincia;
    }

    public void setProvincia(int provincia) {
        this.provincia = provincia;
    }

    public int getCanton() {
        return canton;
    }

    public void setCanton(int canton) {
        this.canton = canton;
    }

    public int getDistrito() {
        return distrito;
    }

    public void setDistrito(int distrito) {
        this.distrito = distrito;
    }

    public boolean insertarAvaluo() throws SQLException {
        Connection con = Conexion.getConexion();
        boolean result = false;
        if (con != null) {
            String sql = "{call InsertarAvaluo(?,?,?,?,?,?,?,?,?,?,?,?,?)}";
            try {
                CallableStatement st = con.prepareCall(sql);
                st.setString(1, this.getIdAvaluo());
                st.setDate(2, this.getFechaVisita());
                st.setInt(3, this.getOficina());
                st.setDouble(4, this.getAreaCatastro());
                st.setString(5, this.getNumeroCatastro());
                st.setString(6, this.getIdPredial());
                st.setDouble(7, this.getAreaRegistro());
                st.setDouble(8, this.getValorTerreno());
                st.setDouble(9, this.getValorConstruccion());
                st.setInt(10, this.getIdSolicitante());
                st.setInt(11, this.getDistrito());
                st.setInt(12, this.getCanton());
                st.setInt(13, this.getProvincia());
                
                st.execute();
                result = true;
                con.close();
            } catch (SQLException ex) {
                throw ex;
            }
        }
        return result;
    }
    
    public DefaultComboBoxModel cargarComboProvincia() {
        try {
           DefaultComboBoxModel modeloCombo = new DefaultComboBoxModel();
            Connection conexion = Conexion.getConexion();
            Statement st = conexion.createStatement();
            ResultSet rs = st.executeQuery("SELECT * FROM provincia");
            while (rs.next()) {
                modeloCombo.addElement(rs.getObject("NombreProvincia"));
            }
            rs.close();
            return modeloCombo;
        } catch (SQLException ex) {
            
        }   
        return null;
    }
    
    public DefaultComboBoxModel cargarComboCanton(int idProvincia) {
        try {
            DefaultComboBoxModel modeloCombo = new DefaultComboBoxModel();
            Connection conexion = Conexion.getConexion();
            Statement st = conexion.createStatement();
            ResultSet rs = st.executeQuery("SELECT * FROM avaluos.canton where Provincia_idProvincia= "+idProvincia);
            while (rs.next()) {
                modeloCombo.addElement(rs.getObject("NombreCanton"));
            }
            rs.close();
            return modeloCombo;
        } catch (SQLException ex) {
            
        }   
        return null;
    }
    
    public DefaultComboBoxModel cargarComboDistrito(int idProvincia,int idCanton) {
        try {
            DefaultComboBoxModel modeloCombo = new DefaultComboBoxModel();
            Connection conexion = Conexion.getConexion();
            Statement st = conexion.createStatement();
            ResultSet rs = st.executeQuery("SELECT * FROM avaluos.distrito where Canton_idProvincia= "+idProvincia+" and Canton_idCanton= "+idCanton);
            while (rs.next()) {
                modeloCombo.addElement(rs.getObject("NombreDistrito"));
            }
            rs.close();
            return modeloCombo;
        } catch (SQLException ex) {
            
        }   
        return null;
    }
}
